[toc]
总结glibc的升级操作
遇到的执行程序报错
fastp.sh 的时候报下面的错,其他节点都没问题
fastp: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by fastp)
fastp: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /zlib/lib/libz.so.1)
在操作之前最好先备份 /lib64/libc.so.6
和它对应指向的链接文件
处理过程
注: 操作服务器的时候,一定要把这个节点从集群中去除。确保不影响业务的使用
# cat /etc/redhat-release
CentOS release 6.5 (Final)
# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
由上面的信息可以看出系统是CentOS 6.5,最高支持glibc的版本为2.12,而研发程序要2.14版本,所以需要升级。
下载软件并升级
# wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
# wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz
# tar -xvf glibc-2.14.tar.gz
# tar -xvf glibc-ports-2.14.tar.gz
# mv glibc-ports-2.14 glibc-2.14/ports
# mkdir glibc-2.14/build
# cd glibc-2.14/build
# ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
# make
# make install
遇到的问题
这个时候可能遇到以下问题,千万不要断开ssh 执行以下命令进行补救
# LD_PRELOAD=/lib64/libc-2.14.so
# rm -f /lib64/libc.so.6
# ln -s /lib64/libc-2.14.so /lib64/libc.so.6
这时候再看看系统命令还能否都正常使用
如果断开了ssh 的情况下
如果断开了ssh 只能进系统救援模式进行补救了;
重启,(single/1)单用户模式,/bin/bash,enforcing=0,selinux=0 都是无济于事的,因为它涉及的库是libc.so.6
必需的,重启后会报内核恐慌Kernel panic – not syncing: Attempted to kill init
;
因此进入救援模式进行补救。
- 连接dell服务器远程控制台,映射本地镜像文件到dell服务器;
- 启动项默认调整为光盘镜像启动;
- 进入救援模式
Rescue installed system
; - 选择语言和键盘用English、 us;
- 出现网络设置不需要配置;
- 挂载/mnt/sysimage 选用Continue;
- 发现磁盘,选择yes;
- 启用shell登录;
- cd /mnt/sysimage 目录;
rm -f /lib64/libc.so.6
cd /lib64 && ln -s libc-2.14.so libc.so.6
;chroot /mnt/sysimage
切换根目录测试系统是否无误;- 重新启动系统。